SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE  PROCEDURE [dbo].[SP_TCMOVI_CAJA_I10]  
/*---------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                  --*/  
/*---Cliente              : OFISIS S.A.                  --*/  
/*---Sistema              : Tesoreria                    --*/  
/*---Mödulo               : Empresa                      --*/  
/*---Programa             : Procedimiento para generar   --*/  
/*---                     Comprobantes para Trabajadores --*/        
/*---Script               : ttproc_i.sql                 --*/  
/*---Nombre SP            : SP_TCMOVI_CAJA_I10           --*/  
/*---Desarrollado por     : Javier Flores A.             --*/  
/*---Fecha Creaciön       : 10/05/2004                   --*/  
/*---Base Datos           : Microsoft Sql Server         --*/  
/*---Versiön              : 8.0                          --*/  
/*---Invoca a SP          :                              --*/  
/*---------------------------------------------------------*/  
  
/*---------------------------------------------------------*/  
/*---Modificado 1 por     :Luz Maribel Julca Rodriguez   --*/  
/*---Fecha Modificaciön   :19/04/2005                    --*/   
/*---Detalle Modificaciön :ingresos de los campos CO_USUA_CREA, CO_USUA_MODI--*/  
/*---------------------------------------------------------*/  
  
/*---------------------------------------------------------*/  
/*---Comentarios                                         --*/  
/*---                                                    --*/  
/*---                                                    --*/  
/*---------------------------------------------------------*/  
  
/*---------------------------------------------------------*/  
/*--- Drop Proc SP_TCMOVI_CAJA_I10                  --*/  
/*--- Grant all on SP_TCMOVI_CAJA_I10 to public      --*/   
/*--- SP_TCMOVI_CAJA_I10      --*/  
/*---------------------------------------------------------*/  
@ISCO_USUA_MODI  TD_VC_008_USUA,  
@ISCO_EMPR       TD_VC_002,      
@ISCO_UNID_CNTB         TD_VC_003,  
@ISCO_CAJA   TD_VC_008,   
@ISAA_CAJA              TD_VC_004,  
@ISMM_CAJA              TD_VC_002,  
@IDFE_OPER   TD_DT_001,   
@ISCO_TIPO_OPER  TD_VC_003,  
@ISCO_SUBR   TD_VC_003,   
@INFA_TIPO_CAMB  TD_NU_015_006,   
@ISTI_CORR_INEG         TD_VC_001,  
@ISST_ASTO_RESU         TD_VC_001,  
@ISTI_PLAN              TD_VC_003,  
@ISDE_CPTO              TD_VC_020,  
@ISCO_MONE_PLAN         TD_VC_003,  
@ISCO_MONE_CNTA         TD_VC_003,  
@ISCO_CPTO_FORM         TD_VC_006,  
@INNU_ANNO              TD_IN_001,  
@INNU_PERI              TD_IN_001
	As
Declare  
   @VNCO_NUEV_NUME TD_IN_001,   
   @VSCO_NUEV_CHAR TD_VC_008,  
   @VNNU_REGI      TD_IN_001,  
   @VNUL_CORR_EGRE TD_IN_001,  
   @VNUL_CORR_INEG TD_IN_001,  
   @VNUL_CORR_AJUS TD_IN_001,   
   @VSST_INTE_BACH TD_VC_001,  
   @VSTI_OPNI_CARG TD_VC_003,  
   @VSTI_OPNI_ABON TD_VC_003,  
   @CSCO_TRAB      TD_VC_020,  
   @VNFE_0001      TD_IN_001,  
   @CNNU_DATO_CALC TD_NU_016_004,  
   @VSNU_CHEQ      TD_VC_020,  
   @VSNU_ULTI_CHEQ TD_VC_020,  
   @VNNU_CHEQ      TD_IN_001,  
   @CSNO_TRAB      TD_VC_200,  
   @VSTI_ENTI      TD_VC_001,  
   @VSNU_CHEQ_ANTE TD_VC_020,  
   @VSCO_MONE_EXTR TD_VC_003,  
   @VSCO_MONE_NACI TD_VC_003,  
   @VSTI_CAMB_0002 TD_VC_001,  
   @VSTI_ORIG      TD_VC_001,  
   @VNIM_MOVI      TD_NU_016_004,  
   @OSNU_COMP_CAJA TD_VC_008,  
   @ONNU_ERRO      TD_IN_001,  
   @VNAA_CAJA      TD_IN_001,  
   @VNMM_CAJA      TD_IN_001,  
   @VSCO_CATE_PLAN TD_VC_003,  
   @VSCO_OPRC_CNTB TD_VC_003,  
   @CSCO_MONE      TD_VC_003,  
   @CDFE_OPER      TD_DT_001,   
   @CNFA_TIPO_CAMB TD_NU_015_006,   
   @CSCO_TIPO_OPER TD_VC_003,  
   @CSCO_SUBR      TD_VC_003,  
   @VNNU_SECU      TD_IN_001  
  
Begin Tran SP_TCMOVI_CAJA_I10  
  
     Select @VSST_INTE_BACH = ST_INTE_BACH,  
      @VSTI_OPNI_CARG = CO_TIPO_OPEG,   
            @VSTI_OPNI_ABON = CO_TIPO_OPER,   
            @VSCO_MONE_NACI = CO_MONE_DEFA,  
            @VSCO_MONE_EXTR = CO_MONE_EXTR,  
            @VSTI_CAMB_0002 = TI_CAMB,   
            @VSTI_ORIG      = TI_ORIG  
  From   TMPARA_TESO   
     Where  CO_EMPR = @ISCO_EMPR  
  
Declare CU_TCMOVI_CAJA_I10_1 Cursor For  
Select  CO_TRAB, NO_TRAB, NU_DATO_CALC, CO_MONE, FE_OPER, FA_TIPO_CAMB, CO_TIPO_OPER, CO_SUBR  
From    #TWCHEQ_CAJA  
  
Open CU_TCMOVI_CAJA_I10_1   
Fetch CU_TCMOVI_CAJA_I10_1   
      Into @CSCO_TRAB, @CSNO_TRAB, @CNNU_DATO_CALC, @CSCO_MONE, @CDFE_OPER, @CNFA_TIPO_CAMB, @CSCO_TIPO_OPER, @CSCO_SUBR  
  
Select @VNFE_0001  = @@FETCH_STATUS  
  
    Select @VNNU_SECU = IsNull(Max(NU_SECU),0) + 1  
    From  TDTRAB_PROC  
    Where CO_EMPR = @ISCO_EMPR  
  
While (@VNFE_0001 = 0)  
  Begin  
    If (@VNFE_0001 < 0)  
       Begin     
   Close CU_TCMOVI_CAJA_I10_1  
  Deallocate CU_TCMOVI_CAJA_I10_1  
  Return  
        End    
  
    If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND   
       @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON  
       Begin    
         EXEC SP_TTULTI_ASTO_Q02 @ISCO_EMPR,@ISCO_USUA_MODI,@ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @OSNU_COMP_CAJA OUTPUT,  
                                 @ONNU_ERRO OUTPUT   
           
  IF (@ONNU_ERRO != 0)  
            Begin  
              RAISERROR 20001 'FIN DE ARCHIVO'  
              ROLLBACK TRANSACTION SP_TCMOVI_CAJA_I10          
               Close CU_TCMOVI_CAJA_I10_1  
               Deallocate CU_TCMOVI_CAJA_I10_1  
              RETURN  
            End  
       End  
  
    Else  
 Begin  
            Select @VSCO_NUEV_CHAR  = ISNULL(MAX(NU_COMP_CAJA), '0')  
            From  TCMOVI_CAJA   
     Where CO_EMPR = @ISCO_EMPR   
            And   CO_CAJA = @ISCO_CAJA   
            And   AA_CAJA = @ISAA_CAJA  
     And   MM_CAJA = @ISMM_CAJA   
            And   TI_MOVI = 'E'    
     And   NU_COMP_CAJA LIKE '000%'  
  
            Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1  
   
     Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)  
  
     -- RELLENA DE CEROS HASTA 8 CARACTERES   
     Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'') +LTRIM(RTRIM(@VSCO_NUEV_CHAR))  
  
            Select @OSNU_COMP_CAJA = @VSCO_NUEV_CHAR   
  
     Select @VNUL_CORR_AJUS = 0  
            SELECT @VNUL_CORR_EGRE = @VNCO_NUEV_NUME   
        End  
  
    Select @VSCO_CATE_PLAN =  CO_CATE_PLAN  
    From   TTPLAN  
    Where  CO_PLAN = @ISTI_PLAN  
  
    If Substring(@VSCO_CATE_PLAN,1,1) = 'O'  
       Select @VSTI_ENTI = 'O'     
    Else  
       Select @VSTI_ENTI = 'E'  
/*  
     If @ISCO_MONE_CNTA != @ISCO_MONE_PLAN  
        Begin  
          If @ISCO_MONE_CNTA = @VSCO_MONE_EXTR  
      Select  @VNIM_MOVI = Round(@CNNU_DATO_CALC / @INFA_TIPO_CAMB,2)  
          Else  
  
     Select  @VNIM_MOVI = Round(@CNNU_DATO_CALC *  @INFA_TIPO_CAMB,2)  
        End  
     Else  
        Select  @VNIM_MOVI = @CNNU_DATO_CALC  
*/  
     Select @VNIM_MOVI = Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(@ISCO_MONE_PLAN,   
                         @ISCO_MONE_CNTA, @IDFE_OPER, @CNNU_DATO_CALC, @VSTI_CAMB_0002,   
                         @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB),2)  
  
    Insert Into TCMOVI_CAJA(  
    CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA, FE_OPER,  
    CO_TIPO_OPER, CO_SUBR, FA_TIPO_CAMB, IM_MOVI, TI_ENTI, CO_ENTI, DE_ENTI,  
    DE_OBSE, ST_CONT, NU_PROC, TI_SITU, CO_UNID_CONC,CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )  
    Values (  
    @ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, 'E', @OSNU_COMP_CAJA, @IDFE_OPER, @ISCO_TIPO_OPER,  
    @ISCO_SUBR, @INFA_TIPO_CAMB, @VNIM_MOVI, @VSTI_ENTI, @CSCO_TRAB, substring(@CSNO_TRAB,1,100),  
    @ISDE_CPTO, 'N', NULL, 'ACT', @ISCO_UNID_CNTB, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())  
  
    If @@error <> 0  
       Begin  
         Rollback tran SP_TCMOVI_CAJA_I10  
         Close CU_TCMOVI_CAJA_I10_1  
         Deallocate CU_TCMOVI_CAJA_I10_1  
         Return  
       End  
  
    Insert into TDTRAB_PROC (   
    CO_EMPR, CO_UNID_CNTB, CO_TRAB, CO_PLAN, NU_ANNO, NU_PERI, CO_CPTO_FORM, NU_SECU, CO_MONE, IM_TRAB_CALC, CO_CAJA,  
    NU_COMP_BACA, FE_OPER, FA_TIPO_CAMB, CO_TIPO_OPER, CO_SUBR, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
  
    Values (@ISCO_EMPR, @ISCO_UNID_CNTB, @CSCO_TRAB, @ISTI_PLAN, @INNU_ANNO, @INNU_PERI, @ISCO_CPTO_FORM, @VNNU_SECU,   
            @CSCO_MONE, @CNNU_DATO_CALC, @ISCO_CAJA, @OSNU_COMP_CAJA, @CDFE_OPER,   
            @CNFA_TIPO_CAMB, @CSCO_TIPO_OPER, @CSCO_SUBR, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE() )  
  
    If @@error <> 0  
       Begin  
         Rollback tran SP_TCMOVI_CAJA_I10  
         Close CU_TCMOVI_CAJA_I10_1  
         Deallocate CU_TCMOVI_CAJA_I10_1  
         Return  
       End  
  
  
   /* Actualizando el numero de cheque en la tabla temporal para los trabajadores */   
  
   Update  #TWCHEQ_CAJA Set NU_COMP_CAJA = @OSNU_COMP_CAJA WHERE CURRENT OF CU_TCMOVI_CAJA_I10_1   
  
   /* ----------- Actualiza los Correlativos ------------------ */  
    If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR   
 @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON  
      Begin      
  
     If @ISTI_CORR_INEG = 'N'  
           Begin  
       Select @VNUL_CORR_EGRE = UL_CORR_EGRE   
         From TMSACA_MENS  
       WHERE CO_EMPR = @ISCO_EMPR    
            AND   CO_CAJA = @ISCO_CAJA   
         AND   AA_CAJA = @ISAA_CAJA   
         AND   MM_CAJA = @ISMM_CAJA   
  
         Update TMSACA_MENS  
         Set  UL_CORR_EGRE = @VNUL_CORR_EGRE + 1 + @VNUL_CORR_AJUS, CO_USUA_MODI = @ISCO_USUA_MODI,   
                     FE_USUA_MODI = GETDATE()  
          Where  CO_EMPR = @ISCO_EMPR   
         And    CO_CAJA = @ISCO_CAJA   
                And AA_CAJA = @ISAA_CAJA   
                And    MM_CAJA = @ISMM_CAJA  
  
         If @@error <> 0  
                 Begin  
                   Rollback tran SP_TCMOVI_CAJA_I10  
                   Close CU_TCMOVI_CAJA_I10_1  
                   Deallocate CU_TCMOVI_CAJA_I10_1  
            Return  
                 End  
    End  
       Else  
           Begin  
           Select @VNUL_CORR_INEG = UL_CORR_INEG   
             From TMSACA_MENS  
            WHERE CO_EMPR = @ISCO_EMPR  
         AND   CO_CAJA = @ISCO_CAJA  
         AND   AA_CAJA = @ISAA_CAJA  
         AND   MM_CAJA = @ISMM_CAJA  
  
         Update TMSACA_MENS  
         Set  UL_CORR_INEG = @VNUL_CORR_INEG + 1 + @VNUL_CORR_AJUS, CO_USUA_MODI = @ISCO_USUA_MODI,  
                     FE_USUA_MODI = GETDATE()  
          Where  CO_EMPR = @ISCO_EMPR  
          And    CO_CAJA = @ISCO_CAJA  
         And    AA_CAJA = @ISAA_CAJA  
         And    MM_CAJA = @ISMM_CAJA  
  
         If @@error <> 0  
                 Begin  
                   Rollback tran SP_TCMOVI_CAJA_I10  
                   Close CU_TCMOVI_CAJA_I10_1  
                   Deallocate CU_TCMOVI_CAJA_I10_1  
              Return  
                 End  
   End  
    End  
  
    /* Generaci½n Voucher Contable  */  
  
     If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND   
       @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON  
       Begin    
          Select @VNAA_CAJA = CONVERT(INT,@ISAA_CAJA)  
          Select @VNMM_CAJA = CONVERT(INT,@ISMM_CAJA)  
  
   EXEC SP_TTPROC_INTE_I57  @ISCO_EMPR ,@ISCO_USUA_MODI, @ISCO_CAJA ,  NULL, NULL,  
                     @VNAA_CAJA, @VNMM_CAJA, @IDFE_OPER, @OSNU_COMP_CAJA, 'S'   
          If @@error <> 0  
          Begin  
            Rollback tran SP_TCMOVI_CAJA_I10  
            Close CU_TCMOVI_CAJA_I10_1  

            Deallocate CU_TCMOVI_CAJA_I10_1  
            Return  
          End  
  
          Select Distinct @VSCO_OPRC_CNTB = CO_OPRC_CNTB From TDTIPO_OPER Where CO_EMPR = @ISCO_EMPR And CO_TIPO_OPER = @ISCO_TIPO_OPER  
  
          Delete TTINTE_CNDE  
          Where CO_EMPR = @ISCO_EMPR  
          And NU_CNTB_EMPR = 1  
          And CO_UNID_CNTB = @ISCO_UNID_CNTB  
          And CO_OPRC_CNTB = @VSCO_OPRC_CNTB  
          And NU_ANNO      = @VNAA_CAJA  
          And NU_MESE      = @VNMM_CAJA  
       And NU_ASTO      = @OSNU_COMP_CAJA  
  
   Update  TCMOVI_CAJA  
   Set ST_CONT = 'P',
	   CO_USUA_MODI = @ISCO_USUA_MODI,  
       FE_USUA_MODI = GETDATE()  
   Where CO_EMPR  = @ISCO_EMPR  
          And   CO_CAJA = @ISCO_CAJA  
          And   AA_CAJA = @ISAA_CAJA  
          And   MM_CAJA = @ISMM_CAJA  
          And   TI_MOVI = 'E'  
          And   NU_COMP_CAJA = @OSNU_COMP_CAJA  
  
       End  
  
    Fetch  CU_TCMOVI_CAJA_I10_1   
           Into @CSCO_TRAB, @CSNO_TRAB, @CNNU_DATO_CALC, @CSCO_MONE, @CDFE_OPER, @CNFA_TIPO_CAMB, @CSCO_TIPO_OPER, @CSCO_SUBR  
  
    Select @VNFE_0001 = @@FETCH_STATUS  
  
  End  
  
  Close CU_TCMOVI_CAJA_I10_1  
  Deallocate CU_TCMOVI_CAJA_I10_1  
  
Commit Tran SP_TCMOVI_CAJA_I10  
  
RETURN  
/*------------------------ Fin ------------------------------*/


GO
